#!/usr/bin/env python
# -*- coding: utf-8 -*-
# ゆーてぃーえふはちをつかおう！

# setdefaultencoding
# 通常は sys インポート後に setdefaultencodingは設定できないよう削除されてしまうため、
# reloadしてから設定する
# ElementTreeはこうしないとuncode文字列を扱えなかった
# stdin,stdout,stderrのencodingもここで再定義すると都度指定がいらなくなって楽だが、
# そうすると getpass がうまく動かない(入力文字列が画面に表示されてしまう)。
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

import codecs

from optparse import OptionParser
from getpass import getpass
from xml.etree.ElementTree import *


class KMLTree() :
    __doc__ = """KML class inherited ElementTree

"""
    #KMLのおやくそく
    NAMESPACE = u'http://www.opengis.net/kml/2.2'

    #KMLは utf-8 にしとけば日本語が直書きできるようである
    ENCODE = 'utf-8'

    root = None
    doc = None  # pointer for Document tag

    def __init__(self) :
        self.root = Element(u'kml', xmlns=self.NAMESPACE)
        self.doc = SubElement(self.root, u'Document')

    def addPlacemark(self, title, desc, pos) :
        """kml_placemark - KML generate placemark elements
        
        args:
        title : string  
        desc : string allow html tags. HTMLが書ける。URLと解釈できる文字列はそのままリンクにしてくれる。
        pos : string coordinate '<<longtitude>>,<<latitude>>' なぜかgeoRSSとKMLでは順番が逆であるので注意
        return: None
        func:
        generate placemark elements. includes title, description, Point.
        strings only unicode-string (unicocde-string != UTF-8 :-)
        """
        kml_placemark = SubElement(self.doc, u'Placemark')
        
        kml_name = SubElement(kml_placemark, u'name')
        kml_name.text = title

        kml_desc = SubElement(kml_placemark, u'description')
        kml_desc.text = desc

        kml_point = SubElement(kml_placemark, u'Point')

        kml_coord = SubElement(kml_point, u'coordinates')
        kml_coord.text = pos

    def tree(self) :
        return ElementTree(self.root)


if __name__ == '__main__' :
    kml = KMLTree()
    kml.tree().write('test_kml_class.kml')
